#include <hex/api/content_registry.hpp>
#include <hex/api/localization.hpp>

namespace hex::plugin::builtin {

    void registerLanguageEnUS() {
        ContentRegistry::Language::registerLanguage("English (US)", "en-US");
        LangEntry::setFallbackLanguage("en-US");

        ContentRegistry::Language::addLocalizations("en-US", {
                { "hex.builtin.welcome.header.main", "Welcome to ImHex" },
                { "hex.builtin.welcome.header.start", "Start" },
                    { "hex.builtin.welcome.start.create_file", "Create New File" },
                    { "hex.builtin.welcome.start.open_file", "Open File" },
                    { "hex.builtin.welcome.start.open_project", "Open Project" },
                    { "hex.builtin.welcome.start.recent", "Recent Files" },
                    { "hex.builtin.welcome.start.open_other", "Other Providers" },
                { "hex.builtin.welcome.header.help", "Help" },
                    { "hex.builtin.welcome.help.repo", "GitHub Repository" },
                        { "hex.builtin.welcome.help.repo.link", "https://imhex.werwolv.net/git" },
                    { "hex.builtin.welcome.help.gethelp", "Get Help" },
                        { "hex.builtin.welcome.help.gethelp.link", "https://github.com/WerWolv/ImHex/discussions/categories/get-help" },
                    { "hex.builtin.welcome.help.discord", "Discord Server" },
                        { "hex.builtin.welcome.help.discord.link", "https://imhex.werwolv.net/discord" },
                { "hex.builtin.welcome.header.plugins", "Loaded Plugins" },
                    { "hex.builtin.welcome.plugins.plugin", "Plugin" },
                    { "hex.builtin.welcome.plugins.author", "Author" },
                    { "hex.builtin.welcome.plugins.desc", "Description" },
                { "hex.builtin.welcome.header.customize", "Customize" },
                    { "hex.builtin.welcome.customize.settings.title", "Settings" },
                    { "hex.builtin.welcome.customize.settings.desc", "Change preferences of ImHex" },
                { "hex.builtin.welcome.header.update", "Updates" },
                    { "hex.builtin.welcome.update.title", "New Update available!" },
                    { "hex.builtin.welcome.update.desc", "ImHex {0} just released! Download it here." },
                    { "hex.builtin.welcome.update.link", "https://github.com/WerWolv/ImHex/releases/latest" },
                { "hex.builtin.welcome.header.learn", "Learn" },
                    { "hex.builtin.welcome.learn.latest.title", "Latest Release" },
                    { "hex.builtin.welcome.learn.latest.desc", "Read ImHex's current changelog" },
                    { "hex.builtin.welcome.learn.latest.link", "https://github.com/WerWolv/ImHex/releases/latest" },
                    { "hex.builtin.welcome.learn.pattern.title", "Pattern Language Documentation" },
                    { "hex.builtin.welcome.learn.pattern.desc", "Learn how to write ImHex patterns with our extensive documentation" },
                    { "hex.builtin.welcome.learn.pattern.link", "https://imhex.werwolv.net/docs/pattern_language/pattern_language.html" },
                    { "hex.builtin.welcome.learn.plugins.title", "Plugins API" },
                    { "hex.builtin.welcome.learn.plugins.desc", "Extend ImHex with additional features using plugins" },
                    { "hex.builtin.welcome.learn.plugins.link", "https://github.com/WerWolv/ImHex/wiki/Plugins-Development-Guide" },
                { "hex.builtin.welcome.header.various", "Various" },
                { "hex.builtin.welcome.tip_of_the_day", "Tip of the Day" },

                { "hex.builtin.welcome.safety_backup.title", "Restore lost data" },
                { "hex.builtin.welcome.safety_backup.desc", "Oh no, ImHex crashed last time.\nDo you want to restore your past work?"},
                { "hex.builtin.welcome.safety_backup.restore", "Yes, Restore" },
                { "hex.builtin.welcome.safety_backup.delete", "No, Delete" },


                { "hex.builtin.common.little_endian", "Little Endian" },
                { "hex.builtin.common.big_endian", "Big Endian" },
                { "hex.builtin.common.decimal", "Decimal" },
                { "hex.builtin.common.hexadecimal", "Hexadecimal" },
                { "hex.builtin.common.octal", "Octal" },
                { "hex.builtin.common.info", "Information" },
                { "hex.builtin.common.error", "Error" },
                { "hex.builtin.common.fatal", "Fatal Error" },
                { "hex.builtin.common.address", "Address" },
                { "hex.builtin.common.size", "Size" },
                { "hex.builtin.common.region", "Region" },
                { "hex.builtin.common.match_selection", "Match Selection" },
                { "hex.builtin.common.yes", "Yes" },
                { "hex.builtin.common.no", "No" },
                { "hex.builtin.common.okay", "Okay" },
                { "hex.builtin.common.load", "Load" },
                { "hex.builtin.common.cancel", "Cancel" },
                { "hex.builtin.common.set", "Set" },
                { "hex.builtin.common.close", "Close" },
                { "hex.builtin.common.dont_show_again", "Don't show again" },
                { "hex.builtin.common.link", "Link" },
                { "hex.builtin.common.file", "File" },
                { "hex.builtin.common.open", "Open" },
                { "hex.builtin.common.browse", "Browse..." },
                { "hex.builtin.common.choose_file", "Choose file" },

                { "hex.builtin.message.file_handler_failed", "Failed to open file with registered file handler." },

                { "hex.builtin.menu.file", "File" },
                { "hex.builtin.menu.edit", "Edit" },
                { "hex.builtin.menu.view", "View" },
                { "hex.builtin.menu.layout", "Layout" },
                    { "hex.builtin.menu.view.fps", "Display FPS" },
                    { "hex.builtin.menu.view.demo", "Show ImGui Demo" },
                { "hex.builtin.menu.help", "Help" },

                { "hex.builtin.view.bookmarks.name", "Bookmarks" },
                    { "hex.builtin.view.bookmarks.default_title", "Bookmark [0x{0:X} - 0x{1:X}]" },
                    { "hex.builtin.view.bookmarks.no_bookmarks", "No bookmarks created yet. Add one with Edit -> Create Bookmark" },
                    { "hex.builtin.view.bookmarks.title.info", "Information" },
                    { "hex.builtin.view.bookmarks.address", "0x{0:X} : 0x{1:X} ({2} bytes)" },
                    { "hex.builtin.view.bookmarks.button.jump", "Jump to" },
                    { "hex.builtin.view.bookmarks.button.remove", "Remove" },
                    { "hex.builtin.view.bookmarks.header.name", "Name" },
                    { "hex.builtin.view.bookmarks.header.color", "Color" },
                    { "hex.builtin.view.bookmarks.header.comment", "Comment" },

                { "hex.builtin.view.command_palette.name", "Command Palette" },

                { "hex.builtin.view.data_inspector.name", "Data Inspector" },
                    { "hex.builtin.view.data_inspector.table.name", "Name" },
                    { "hex.builtin.view.data_inspector.table.value", "Value" },
                    { "hex.builtin.view.data_inspector.no_data", "No bytes selected"},

                { "hex.builtin.view.data_processor.name", "Data Processor" },
                    { "hex.builtin.view.data_processor.menu.remove_selection", "Remove Selected" },
                    { "hex.builtin.view.data_processor.menu.remove_node", "Remove Node" },
                    { "hex.builtin.view.data_processor.menu.remove_link", "Remove Link" },
                    { "hex.builtin.view.data_processor.menu.file.load_processor", "Load data processor..." },
                    { "hex.builtin.view.data_processor.menu.file.save_processor", "Save data processor..." },

                { "hex.builtin.view.disassembler.name", "Disassembler" },
                    { "hex.builtin.view.disassembler.position", "Position" },
                    { "hex.builtin.view.disassembler.base", "Base address" },
                    { "hex.builtin.view.disassembler.region", "Code region" },
                    { "hex.builtin.view.disassembler.settings.header", "Settings" },
                    { "hex.builtin.view.disassembler.settings.mode", "Mode" },
                    { "hex.builtin.view.disassembler.arch", "Architecture" },
                        { "hex.builtin.view.disassembler.16bit", "16-bit" },
                        { "hex.builtin.view.disassembler.32bit", "32-bit" },
                        { "hex.builtin.view.disassembler.64bit", "64-bit" },

                        { "hex.builtin.view.disassembler.arm.arm", "ARM" },
                        { "hex.builtin.view.disassembler.arm.thumb", "Thumb" },
                        { "hex.builtin.view.disassembler.arm.default", "Default" },
                        { "hex.builtin.view.disassembler.arm.cortex_m", "Cortex-M" },
                        { "hex.builtin.view.disassembler.arm.armv8", "ARMv8" },

                        { "hex.builtin.view.disassembler.mips.mips32", "MIPS32" },
                        { "hex.builtin.view.disassembler.mips.mips64", "MIPS64" },
                        { "hex.builtin.view.disassembler.mips.mips32R6", "MIPS32R6" },
                        { "hex.builtin.view.disassembler.mips.mips2", "MIPS II" },
                        { "hex.builtin.view.disassembler.mips.mips3", "MIPS III" },
                        { "hex.builtin.view.disassembler.mips.micro", "Micro" },

                        { "hex.builtin.view.disassembler.ppc.qpx", "Quad Processing Extensions" },
                        { "hex.builtin.view.disassembler.ppc.spe", "Signal Processing Engine" },
                        { "hex.builtin.view.disassembler.ppc.booke", "Book-E" },

                        { "hex.builtin.view.disassembler.sparc.v9", "Sparc V9" },

                        { "hex.builtin.view.disassembler.riscv.compressed", "Compressed" },

                        { "hex.builtin.view.disassembler.m68k.000", "000" },
                        { "hex.builtin.view.disassembler.m68k.010", "010" },
                        { "hex.builtin.view.disassembler.m68k.020", "020" },
                        { "hex.builtin.view.disassembler.m68k.030", "030" },
                        { "hex.builtin.view.disassembler.m68k.040", "040" },
                        { "hex.builtin.view.disassembler.m68k.060", "060" },

                        { "hex.builtin.view.disassembler.m680x.6301", "6301" },
                        { "hex.builtin.view.disassembler.m680x.6309", "6309" },
                        { "hex.builtin.view.disassembler.m680x.6800", "6800" },
                        { "hex.builtin.view.disassembler.m680x.6801", "6801" },
                        { "hex.builtin.view.disassembler.m680x.6805", "6805" },
                        { "hex.builtin.view.disassembler.m680x.6808", "6808" },
                        { "hex.builtin.view.disassembler.m680x.6809", "6809" },
                        { "hex.builtin.view.disassembler.m680x.6811", "6811" },
                        { "hex.builtin.view.disassembler.m680x.cpu12", "CPU12" },
                        { "hex.builtin.view.disassembler.m680x.hcs08", "HCS08" },

                        { "hex.builtin.view.disassembler.mos65xx.6502", "6502" },
                        { "hex.builtin.view.disassembler.mos65xx.65c02", "65C02" },
                        { "hex.builtin.view.disassembler.mos65xx.w65c02", "W65C02" },
                        { "hex.builtin.view.disassembler.mos65xx.65816", "65816" },
                        { "hex.builtin.view.disassembler.mos65xx.65816_long_m", "65816 Long M" },
                        { "hex.builtin.view.disassembler.mos65xx.65816_long_x", "65816 Long X" },
                        { "hex.builtin.view.disassembler.mos65xx.65816_long_mx", "65816 Long MX" },

                        { "hex.builtin.view.disassembler.bpf.classic", "Classic" },
                        { "hex.builtin.view.disassembler.bpf.extended", "Extended" },

                    { "hex.builtin.view.disassembler.disassemble", "Disassemble" },
                    { "hex.builtin.view.disassembler.disassembling", "Disassembling..." },
                    { "hex.builtin.view.disassembler.disassembly.title", "Disassembly" },
                        { "hex.builtin.view.disassembler.disassembly.address", "Address" },
                        { "hex.builtin.view.disassembler.disassembly.offset", "Offset" },
                        { "hex.builtin.view.disassembler.disassembly.bytes", "Byte" },

                { "hex.builtin.view.hashes.name", "Hashes" },
                    { "hex.builtin.view.hashes.settings", "Settings" },
                    { "hex.builtin.view.hashes.function", "Hash function" },
                    { "hex.builtin.view.hashes.iv", "Initial value" },
                    { "hex.builtin.view.hashes.xorout", "Final XOR value" },
                    { "hex.builtin.common.reflectIn", "Reflect input" },
                    { "hex.builtin.common.reflectOut", "Reflect output" },
                    { "hex.builtin.view.hashes.poly", "Polynomial" },
                    { "hex.builtin.view.hashes.result", "Result" },

                { "hex.builtin.view.help.name", "Help" },
                    { "hex.builtin.view.help.about.name", "About" },
                        { "hex.builtin.view.help.about.translator", "Translated by WerWolv" },
                        { "hex.builtin.view.help.about.source", "Source code available on GitHub:" },
                        { "hex.builtin.view.help.about.donations", "Donations" },
                        { "hex.builtin.view.help.about.thanks", "If you like my work, please consider donating to keep the project going. Thanks a lot <3" },
                        { "hex.builtin.view.help.about.contributor", "Contributors" },
                        { "hex.builtin.view.help.about.libs", "Libraries used" },
                        { "hex.builtin.view.help.about.paths", "ImHex Directories" },
                        { "hex.builtin.view.help.about.license", "License" },
                    { "hex.builtin.view.help.documentation", "ImHex Documentation" },
                    { "hex.builtin.view.help.pattern_cheat_sheet", "Pattern Language Cheat Sheet"},
                    { "hex.builtin.view.help.calc_cheat_sheet", "Calculator Cheat Sheet" },

                { "hex.builtin.view.hex_editor.name", "Hex editor" },
                    { "hex.builtin.view.hex_editor.create_file", "New" },
                    { "hex.builtin.view.hex_editor.open_file", "Open" },
                    { "hex.builtin.view.hex_editor.open_project", "Open Project" },
                    { "hex.builtin.view.hex_editor.save_project", "Save Project" },
                    { "hex.builtin.view.hex_editor.save_data", "Save Data" },
                    { "hex.builtin.view.hex_editor.open_base64", "Open Base64 File" },
                    { "hex.builtin.view.hex_editor.load_enconding_file", "Load custom encoding File" },
                    { "hex.builtin.view.hex_editor.page", "Page {0} / {1}" },
                    { "hex.builtin.view.hex_editor.save_as", "Save As" },
                    { "hex.builtin.view.hex_editor.exit_application.title", "Exit Application?" },
                    { "hex.builtin.view.hex_editor.exit_application.desc", "You have unsaved changes made to your Project.\nAre you sure you want to exit?" },
                    { "hex.builtin.view.hex_editor.script.title", "Load File with Loader Script" },
                    { "hex.builtin.view.hex_editor.script.desc", "Load a file using a Python loader script." },
                    { "hex.builtin.view.hex_editor.script.script", "Script" },
                        { "hex.builtin.view.hex_editor.script.script.title", "Loader Script: Open Script" },
                    { "hex.builtin.view.hex_editor.script.file", "File" },
                    { "hex.builtin.view.hex_editor.script.file.title", "Loader Script: Open File" },
                    { "hex.builtin.view.hex_editor.processing", "Importing / Exporting" },

                    { "hex.builtin.view.hex_editor.menu.file.open_file", "Open File..." },
                    { "hex.builtin.view.hex_editor.menu.file.open_recent", "Open Recent" },
                    { "hex.builtin.view.hex_editor.menu.file.clear_recent", "Clear" },
                    { "hex.builtin.view.hex_editor.menu.file.open_other", "Open Other..." },
                    { "hex.builtin.view.hex_editor.menu.file.save", "Save" },
                    { "hex.builtin.view.hex_editor.menu.file.save_as", "Save As..." },
                    { "hex.builtin.view.hex_editor.menu.file.close", "Close" },
                    { "hex.builtin.view.hex_editor.menu.file.quit", "Quit ImHex" },
                    { "hex.builtin.view.hex_editor.menu.file.open_project", "Open Project..." },
                    { "hex.builtin.view.hex_editor.menu.file.save_project", "Save Project..." },
                    { "hex.builtin.view.hex_editor.menu.file.load_encoding_file", "Load custom encoding..." },
                    { "hex.builtin.view.hex_editor.menu.file.import", "Import..." },
                        { "hex.builtin.view.hex_editor.menu.file.import.base64", "Base64 File" },
                        { "hex.builtin.view.hex_editor.base64.import_error", "File is not in a valid Base64 format!" },
                        { "hex.builtin.view.hex_editor.file_open_error", "Failed to open file!" },
                        { "hex.builtin.view.hex_editor.menu.file.import.ips", "IPS Patch" },
                        { "hex.builtin.view.hex_editor.menu.file.import.ips32", "IPS32 Patch" },
                        { "hex.builtin.view.hex_editor.menu.file.import.script", "File with Loader Script" },

                    { "hex.builtin.view.hex_editor.menu.file.export", "Export..." },
                        { "hex.builtin.view.hex_editor.menu.file.export.title", "Export File" },
                        { "hex.builtin.view.hex_editor.menu.file.export.ips", "IPS Patch" },
                        { "hex.builtin.view.hex_editor.menu.file.export.ips32", "IPS32 Patch" },
                    { "hex.builtin.view.hex_editor.menu.file.search", "Search" },
                        { "hex.builtin.view.hex_editor.search.string", "String" },
                        { "hex.builtin.view.hex_editor.search.hex", "Hex" },
                        { "hex.builtin.view.hex_editor.search.find", "Find" },
                        { "hex.builtin.view.hex_editor.search.find_next", "Find next" },
                        { "hex.builtin.view.hex_editor.search.find_prev", "Find previous" },
                    { "hex.builtin.view.hex_editor.menu.file.goto", "Goto" },
                        { "hex.builtin.view.hex_editor.goto.offset.absolute", "Absolute" },
                        { "hex.builtin.view.hex_editor.goto.offset.current", "Current" },
                        { "hex.builtin.view.hex_editor.goto.offset.begin", "Begin" },
                        { "hex.builtin.view.hex_editor.goto.offset.end", "End" },
                    { "hex.builtin.view.hex_editor.error.read_only", "Couldn't get write access. File opened in read-only mode." },
                    { "hex.builtin.view.hex_editor.error.open", "Failed to open file!" },
                    { "hex.builtin.view.hex_editor.error.create", "Failed to create new file!" },
                    { "hex.builtin.view.hex_editor.menu.edit.undo", "Undo" },
                    { "hex.builtin.view.hex_editor.menu.edit.redo", "Redo" },
                    { "hex.builtin.view.hex_editor.menu.edit.copy", "Copy" },
                    { "hex.builtin.view.hex_editor.menu.edit.copy_as", "Copy as..." },
                        { "hex.builtin.view.hex_editor.copy.hex", "String" },
                        { "hex.builtin.view.hex_editor.copy.c", "C Array" },
                        { "hex.builtin.view.hex_editor.copy.cpp", "C++ Array" },
                        { "hex.builtin.view.hex_editor.copy.csharp", "C# Array" },
                        { "hex.builtin.view.hex_editor.copy.rust", "Rust Array" },
                        { "hex.builtin.view.hex_editor.copy.python", "Python Array" },
                        { "hex.builtin.view.hex_editor.copy.java", "Java Array" },
                        { "hex.builtin.view.hex_editor.copy.js", "JavaScript Array" },
                        { "hex.builtin.view.hex_editor.copy.ascii", "ASCII Art" },
                        { "hex.builtin.view.hex_editor.copy.html", "HTML" },
                    { "hex.builtin.view.hex_editor.menu.edit.paste", "Paste" },
                    { "hex.builtin.view.hex_editor.menu.edit.select_all", "Select all" },
                    { "hex.builtin.view.hex_editor.menu.edit.bookmark", "Create bookmark" },
                    { "hex.builtin.view.hex_editor.menu.edit.set_base", "Set base address" },
                    { "hex.builtin.view.hex_editor.menu.edit.resize", "Resize..." },
                    { "hex.builtin.view.hex_editor.menu.edit.insert", "Insert..." },

                { "hex.builtin.view.information.name", "Data Information" },
                    { "hex.builtin.view.information.control", "Control" },
                    { "hex.builtin.view.information.analyze", "Analyze page" },
                    { "hex.builtin.view.information.analyzing", "Analyzing..." },
                    { "hex.builtin.view.information.region", "Analyzed region" },
                    { "hex.builtin.view.information.magic", "Magic information" },
                    { "hex.builtin.view.information.description", "Description:" },
                    { "hex.builtin.view.information.mime", "MIME Type:" },
                    { "hex.builtin.view.information.info_analysis", "Information analysis" },
                    { "hex.builtin.view.information.distribution", "Byte distribution" },
                    { "hex.builtin.view.information.entropy", "Entropy" },
                    { "hex.builtin.view.information.block_size", "Block size" },
                    { "hex.builtin.view.information.block_size.desc", "{0} blocks of {1} bytes" },
                    { "hex.builtin.view.information.file_entropy", "File entropy" },
                    { "hex.builtin.view.information.highest_entropy", "Highest entropy block" },
                    { "hex.builtin.view.information.encrypted", "This data is most likely encrypted or compressed!" },
                    { "hex.builtin.view.information.magic_db_added", "Magic database added!" },

                { "hex.builtin.view.patches.name", "Patches" },
                    { "hex.builtin.view.patches.offset", "Offset" },
                    { "hex.builtin.view.patches.orig", "Original value" },
                    { "hex.builtin.view.patches.patch", "Patched value"},
                    { "hex.builtin.view.patches.remove", "Remove patch" },

                { "hex.builtin.view.pattern_editor.name", "Pattern editor" },
                { "hex.builtin.view.pattern_editor.accept_pattern", "Accept pattern" },
                    { "hex.builtin.view.pattern_editor.accept_pattern.desc", "One or more pattern_language compatible with this data type has been found" },
                    { "hex.builtin.view.pattern_editor.accept_pattern.pattern_language", "Patterns" },
                    { "hex.builtin.view.pattern_editor.accept_pattern.question", "Do you want to apply the selected pattern?" },
                { "hex.builtin.view.pattern_editor.menu.file.load_pattern", "Load pattern..." },
                { "hex.builtin.view.pattern_editor.menu.file.save_pattern", "Save pattern..." },
                { "hex.builtin.view.pattern_editor.open_pattern", "Open pattern" },
                { "hex.builtin.view.pattern_editor.evaluating", "Evaluating..." },
                { "hex.builtin.view.pattern_editor.auto", "Auto evaluate" },
                { "hex.builtin.view.pattern_editor.console", "Console" },
                { "hex.builtin.view.pattern_editor.env_vars", "Environment Variables" },
                { "hex.builtin.view.pattern_editor.settings", "Settings" },
                { "hex.builtin.view.pattern_editor.dangerous_function.name", "Allow dangerous function?" },
                { "hex.builtin.view.pattern_editor.dangerous_function.desc", "This pattern tried to call a dangerous function.\nAre you sure you want to trust this pattern?" },
                { "hex.builtin.view.pattern_editor.no_in_out_vars", "Define some global variables with the 'in' or 'out' specifier for them to appear here." },

                { "hex.builtin.view.pattern_data.name", "Pattern Data" },
                    { "hex.builtin.view.pattern_data.var_name", "Name" },
                    { "hex.builtin.view.pattern_data.color", "Color" },
                    { "hex.builtin.view.pattern_data.offset", "Offset" },
                    { "hex.builtin.view.pattern_data.size", "Size" },
                    { "hex.builtin.view.pattern_data.type", "Type" },
                    { "hex.builtin.view.pattern_data.value", "Value" },

                { "hex.builtin.view.settings.name", "Settings" },

                { "hex.builtin.view.strings.name", "Strings" },
                    { "hex.builtin.view.strings.copy", "Copy string" },
                    { "hex.builtin.view.strings.demangle", "Demangle" },
                    { "hex.builtin.view.strings.min_length", "Minimum length" },
                    { "hex.builtin.view.strings.filter", "Filter" },
                    { "hex.builtin.view.strings.extract", "Extract" },
                    { "hex.builtin.view.strings.regex_error", "Invalid regex" },
                    { "hex.builtin.view.strings.results", "Found {0} occurrences" },
                    { "hex.builtin.view.strings.searching", "Searching..." },
                    { "hex.builtin.view.strings.offset", "Offset" },
                    { "hex.builtin.view.strings.size", "Size" },
                    { "hex.builtin.view.strings.string", "String" },
                    { "hex.builtin.view.strings.demangle.title", "Demangled name" },
                    { "hex.builtin.view.strings.demangle.copy", "Copy" },

                { "hex.builtin.view.tools.name", "Tools" },

                { "hex.builtin.view.yara.name", "Yara Rules" },
                    { "hex.builtin.view.yara.header.rules", "Rules" },
                        { "hex.builtin.view.yara.reload", "Reload" },
                        { "hex.builtin.view.yara.match", "Match Rules" },
                        { "hex.builtin.view.yara.matching", "Matching..." },
                        { "hex.builtin.view.yara.error", "Yara Compiler error: " },
                    { "hex.builtin.view.yara.header.matches", "Matches" },
                        { "hex.builtin.view.yara.matches.identifier", "Identifier" },
                        { "hex.builtin.view.yara.matches.variable", "Variable" },
                        { "hex.builtin.view.yara.whole_data", "Whole file matches!" },
                        { "hex.builtin.view.yara.no_rules", "No YARA rules found. Put them in ImHex's 'yara' folder" },
                    { "hex.builtin.view.yara.rule_added", "Yara rule added!" },


                { "hex.builtin.view.constants.name", "Constants" },
                    { "hex.builtin.view.constants.row.category", "Category" },
                    { "hex.builtin.view.constants.row.name", "Name" },
                    { "hex.builtin.view.constants.row.desc", "Description" },
                    { "hex.builtin.view.constants.row.value", "Value" },

                { "hex.builtin.view.store.name", "Content Store" },
                    { "hex.builtin.view.store.desc", "Download new content from ImHex's online database" },
                    { "hex.builtin.view.store.reload", "Reload" },
                    { "hex.builtin.view.store.row.name", "Name" },
                    { "hex.builtin.view.store.row.description", "Description" },
                    { "hex.builtin.view.store.download", "Download" },
                    { "hex.builtin.view.store.update", "Update" },
                    { "hex.builtin.view.store.remove", "Remove" },
                    { "hex.builtin.view.store.tab.patterns", "Patterns" },
                    { "hex.builtin.view.store.tab.libraries", "Libraries" },
                    { "hex.builtin.view.store.tab.magics", "Magic Files" },
                    { "hex.builtin.view.store.tab.constants", "Constants" },
                    { "hex.builtin.view.store.tab.yara", "Yara Rules" },
                    { "hex.builtin.view.store.tab.encodings", "Encodings" },
                    { "hex.builtin.view.store.loading", "Loading store content..." },
                    { "hex.builtin.view.store.download_error", "Failed to download file! Destination folder does not exist." },

                { "hex.builtin.view.diff.name", "Diffing" },

                { "hex.builtin.view.provider_settings.name", "Provider Settings" },
                    { "hex.builtin.view.provider_settings.load_popup", "Open Provider" },

                { "hex.builtin.command.calc.desc", "Calculator" },
                { "hex.builtin.command.cmd.desc", "Command" },
                { "hex.builtin.command.cmd.result", "Run command '{0}'" },
                { "hex.builtin.command.web.desc", "Website lookup" },
                { "hex.builtin.command.web.result", "Navigate to '{0}'" },

                { "hex.builtin.inspector.binary", "Binary (8 bit)" },
                { "hex.builtin.inspector.u8", "uint8_t" },
                { "hex.builtin.inspector.i8", "int8_t" },
                { "hex.builtin.inspector.u16", "uint16_t" },
                { "hex.builtin.inspector.i16", "int16_t" },
                { "hex.builtin.inspector.u32", "uint32_t" },
                { "hex.builtin.inspector.i32", "int32_t" },
                { "hex.builtin.inspector.u64", "uint64_t" },
                { "hex.builtin.inspector.i64", "int64_t" },
                { "hex.builtin.inspector.float16", "half float (16 bit)" },
                { "hex.builtin.inspector.float", "float (32 bit)" },
                { "hex.builtin.inspector.double", "double (64 bit)" },
                { "hex.builtin.inspector.ascii", "ASCII Character" },
                { "hex.builtin.inspector.wide", "Wide Character" },
                { "hex.builtin.inspector.utf8", "UTF-8 code point" },
                { "hex.builtin.inspector.string", "String" },
                { "hex.builtin.inspector.time32", "time32_t" },
                { "hex.builtin.inspector.time64", "time64_t" },
                { "hex.builtin.inspector.time", "time_t" },
                { "hex.builtin.inspector.guid", "GUID" },
                { "hex.builtin.inspector.rgba8", "RGBA8 color" },

                { "hex.builtin.nodes.common.input", "Input" },
                { "hex.builtin.nodes.common.input.a", "Input A" },
                { "hex.builtin.nodes.common.input.b", "Input B" },
                { "hex.builtin.nodes.common.output", "Output" },

                { "hex.builtin.nodes.constants", "Constants" },
                    { "hex.builtin.nodes.constants.int", "Integer" },
                        { "hex.builtin.nodes.constants.int.header", "Integer" },
                    { "hex.builtin.nodes.constants.float", "Float" },
                        { "hex.builtin.nodes.constants.float.header", "Float" },
                    { "hex.builtin.nodes.constants.nullptr", "Nullptr" },
                        { "hex.builtin.nodes.constants.nullptr.header", "Nullptr" },
                    { "hex.builtin.nodes.constants.buffer", "Buffer" },
                        { "hex.builtin.nodes.constants.buffer.header", "Buffer" },
                        { "hex.builtin.nodes.constants.buffer.size", "Size" },
                    { "hex.builtin.nodes.constants.string", "String" },
                        { "hex.builtin.nodes.constants.string.header", "String" },
                    { "hex.builtin.nodes.constants.rgba8", "RGBA8 color" },
                        { "hex.builtin.nodes.constants.rgba8.header", "RGBA8 color" },
                        { "hex.builtin.nodes.constants.rgba8.output.r", "Red" },
                        { "hex.builtin.nodes.constants.rgba8.output.g", "Green" },
                        { "hex.builtin.nodes.constants.rgba8.output.b", "Blue" },
                        { "hex.builtin.nodes.constants.rgba8.output.a", "Alpha" },
                    { "hex.builtin.nodes.constants.comment", "Comment" },
                        { "hex.builtin.nodes.constants.comment.header", "Comment" },

                { "hex.builtin.nodes.display", "Display" },
                    { "hex.builtin.nodes.display.int", "Integer" },
                        { "hex.builtin.nodes.display.int.header", "Integer display" },
                        { "hex.builtin.nodes.display.int.input", "Value" },
                    { "hex.builtin.nodes.display.float", "Float" },
                        { "hex.builtin.nodes.display.float.header", "Float display" },
                        { "hex.builtin.nodes.display.float.input", "Value" },

                { "hex.builtin.nodes.data_access", "Data access" },
                    { "hex.builtin.nodes.data_access.read", "Read" },
                        { "hex.builtin.nodes.data_access.read.header", "Read" },
                        { "hex.builtin.nodes.data_access.read.address", "Address" },
                        { "hex.builtin.nodes.data_access.read.size", "Size" },
                        { "hex.builtin.nodes.data_access.read.data", "Data" },
                    { "hex.builtin.nodes.data_access.write", "Write" },
                        { "hex.builtin.nodes.data_access.write.header", "Write" },
                        { "hex.builtin.nodes.data_access.write.address", "Address" },
                        { "hex.builtin.nodes.data_access.write.data", "Data" },
                    { "hex.builtin.nodes.data_access.size", "Data Size"},
                        { "hex.builtin.nodes.data_access.size.header", "Data Size"},
                        { "hex.builtin.nodes.data_access.size.size", "Size"},

                { "hex.builtin.nodes.casting", "Data conversion" },
                    { "hex.builtin.nodes.casting.int_to_buffer", "Integer to Buffer" },
                        { "hex.builtin.nodes.casting.int_to_buffer.header", "Integer to Buffer" },
                { "hex.builtin.nodes.casting.buffer_to_int", "Buffer to Integer" },
                        { "hex.builtin.nodes.casting.buffer_to_int.header", "Buffer to Integer" },

                { "hex.builtin.nodes.arithmetic", "Arithmetic" },
                    { "hex.builtin.nodes.arithmetic.add", "Addition" },
                        { "hex.builtin.nodes.arithmetic.add.header", "Add" },
                    { "hex.builtin.nodes.arithmetic.sub", "Subtraction" },
                        { "hex.builtin.nodes.arithmetic.sub.header", "Subtract" },
                    { "hex.builtin.nodes.arithmetic.mul", "Multiplication" },
                        { "hex.builtin.nodes.arithmetic.mul.header", "Multiply" },
                    { "hex.builtin.nodes.arithmetic.div", "Division" },
                        { "hex.builtin.nodes.arithmetic.div.header", "Divide" },
                    { "hex.builtin.nodes.arithmetic.mod", "Modulus" },
                        { "hex.builtin.nodes.arithmetic.mod.header", "Modulo" },

                { "hex.builtin.nodes.buffer", "Buffer" },
                    { "hex.builtin.nodes.buffer.combine", "Combine" },
                        { "hex.builtin.nodes.buffer.combine.header", "Combine buffers" },
                    { "hex.builtin.nodes.buffer.slice", "Slice" },
                        { "hex.builtin.nodes.buffer.slice.header", "Slice buffer" },
                        { "hex.builtin.nodes.buffer.slice.input.from", "From" },
                        { "hex.builtin.nodes.buffer.slice.input.to", "To" },
                    { "hex.builtin.nodes.buffer.repeat", "Repeat" },
                        { "hex.builtin.nodes.buffer.repeat.header", "Repeat buffer" },
                        { "hex.builtin.nodes.buffer.repeat.input.count", "Count" },

                { "hex.builtin.nodes.control_flow", "Control flow" },
                    { "hex.builtin.nodes.control_flow.if", "If" },
                        { "hex.builtin.nodes.control_flow.if.header", "If" },
                        { "hex.builtin.nodes.control_flow.if.condition", "Condition" },
                        { "hex.builtin.nodes.control_flow.if.true", "True" },
                        { "hex.builtin.nodes.control_flow.if.false", "False" },
                    { "hex.builtin.nodes.control_flow.equals", "Equals" },
                        { "hex.builtin.nodes.control_flow.equals.header", "Equals" },
                    { "hex.builtin.nodes.control_flow.not", "Not" },
                        { "hex.builtin.nodes.control_flow.not.header", "Not" },
                    { "hex.builtin.nodes.control_flow.gt", "Greater than" },
                        { "hex.builtin.nodes.control_flow.gt.header", "Greater than" },
                    { "hex.builtin.nodes.control_flow.lt", "Less than" },
                        { "hex.builtin.nodes.control_flow.lt.header", "Less than" },
                    { "hex.builtin.nodes.control_flow.and", "AND" },
                        { "hex.builtin.nodes.control_flow.and.header", "Boolean AND" },
                    { "hex.builtin.nodes.control_flow.or", "OR" },
                        { "hex.builtin.nodes.control_flow.or.header", "Boolean OR" },

                { "hex.builtin.nodes.bitwise", "Bitwise operations" },
                    { "hex.builtin.nodes.bitwise.and", "AND" },
                        { "hex.builtin.nodes.bitwise.and.header", "Bitwise AND" },
                    { "hex.builtin.nodes.bitwise.or", "OR" },
                        { "hex.builtin.nodes.bitwise.or.header", "Bitwise OR" },
                    { "hex.builtin.nodes.bitwise.xor", "XOR" },
                        { "hex.builtin.nodes.bitwise.xor.header", "Bitwise XOR" },
                    { "hex.builtin.nodes.bitwise.not", "NOT" },
                        { "hex.builtin.nodes.bitwise.not.header", "Bitwise NOT" },

                { "hex.builtin.nodes.decoding", "Decoding" },
                    { "hex.builtin.nodes.decoding.base64", "Base64" },
                        { "hex.builtin.nodes.decoding.base64.header", "Base64 decoder" },
                    { "hex.builtin.nodes.decoding.hex", "Hexadecimal" },
                        { "hex.builtin.nodes.decoding.hex.header", "Hexadecimal decoder" },

                { "hex.builtin.nodes.crypto", "Cryptography" },
                    { "hex.builtin.nodes.crypto.aes", "AES Decryptor" },
                        { "hex.builtin.nodes.crypto.aes.header", "AES Decryptor" },
                        { "hex.builtin.nodes.crypto.aes.key", "Key" },
                        { "hex.builtin.nodes.crypto.aes.iv", "IV" },
                        { "hex.builtin.nodes.crypto.aes.nonce", "Nonce" },
                        { "hex.builtin.nodes.crypto.aes.mode", "Mode" },
                        { "hex.builtin.nodes.crypto.aes.key_length", "Key length" },

                { "hex.builtin.nodes.visualizer", "Visualizers" },
                    { "hex.builtin.nodes.visualizer.digram", "Digram" },
                        { "hex.builtin.nodes.visualizer.digram.header", "Digram" },
                    { "hex.builtin.nodes.visualizer.layered_dist", "Layered Distribution" },
                        { "hex.builtin.nodes.visualizer.layered_dist.header", "Layered Distribution" },
                    { "hex.builtin.nodes.visualizer.image", "Image" },
                        { "hex.builtin.nodes.visualizer.image.header", "Image Visualizer" },
                    { "hex.builtin.nodes.visualizer.byte_distribution", "Byte Distribution" },
                        { "hex.builtin.nodes.visualizer.byte_distribution.header", "Byte Distribution" },


                { "hex.builtin.tools.demangler", "Itanium/MSVC demangler" },
                    { "hex.builtin.tools.demangler.mangled", "Mangled name" },
                    { "hex.builtin.tools.demangler.demangled", "Demangled name" },
                { "hex.builtin.tools.ascii_table", "ASCII table" },
                    { "hex.builtin.tools.ascii_table.octal", "Show octal" },
                { "hex.builtin.tools.regex_replacer", "Regex replacer" },
                    { "hex.builtin.tools.regex_replacer.pattern", "Regex pattern" },
                    { "hex.builtin.tools.regex_replacer.replace", "Replace pattern" },
                    { "hex.builtin.tools.regex_replacer.input", "Input" },
                    { "hex.builtin.tools.regex_replacer.output", "Output" },
                { "hex.builtin.tools.color", "Color picker" },
                { "hex.builtin.tools.calc", "Calculator" },
                    { "hex.builtin.tools.input", "Input" },
                    { "hex.builtin.tools.format.standard", "Standard" },
                    { "hex.builtin.tools.format.scientific", "Scientific" },
                    { "hex.builtin.tools.format.engineering", "Engineering" },
                    { "hex.builtin.tools.format.programmer", "Programmer" },
                    { "hex.builtin.tools.error", "Last error: '{0}'" },
                    { "hex.builtin.tools.history", "History" },
                    { "hex.builtin.tools.name", "Name" },
                    { "hex.builtin.tools.value", "Value" },
                { "hex.builtin.tools.base_converter", "Base converter" },
                    { "hex.builtin.tools.base_converter.dec", "DEC" },
                    { "hex.builtin.tools.base_converter.hex", "HEX" },
                    { "hex.builtin.tools.base_converter.oct", "OCT" },
                    { "hex.builtin.tools.base_converter.bin", "BIN" },
                { "hex.builtin.tools.permissions", "UNIX Permissions Calculator" },
                    { "hex.builtin.tools.permissions.perm_bits", "Permission bits" },
                    { "hex.builtin.tools.permissions.absolute", "Absolute Notation" },
                    { "hex.builtin.tools.permissions.setuid_error", "User must have execute rights for setuid bit to apply!" },
                    { "hex.builtin.tools.permissions.setgid_error", "Group must have execute rights for setgid bit to apply!" },
                    { "hex.builtin.tools.permissions.sticky_error", "Other must have execute rights for sticky bit to apply!" },
                { "hex.builtin.tools.file_uploader", "File Uploader" },
                    { "hex.builtin.tools.file_uploader.control", "Control" },
                    { "hex.builtin.tools.file_uploader.upload", "Upload" },
                    { "hex.builtin.tools.file_uploader.done", "Done!" },
                    { "hex.builtin.tools.file_uploader.recent", "Recent Uploads" },
                    { "hex.builtin.tools.file_uploader.tooltip", "Click to copy\nCTRL + Click to open" },
                    { "hex.builtin.tools.file_uploader.invalid_response", "Invalid response from Anonfiles!" },
                    { "hex.builtin.tools.file_uploader.error", "Failed to upload file!\n\nError Code: {0}" },
                { "hex.builtin.tools.wiki_explain", "Wikipedia term definitions" },
                    { "hex.builtin.tools.wiki_explain.control", "Control" },
                    { "hex.builtin.tools.wiki_explain.search", "Search" },
                    { "hex.builtin.tools.wiki_explain.results", "Results" },
                    { "hex.builtin.tools.wiki_explain.invalid_response", "Invalid response from Wikipedia!" },
                { "hex.builtin.tools.file_tools", "File Tools" },
                    { "hex.builtin.tools.file_tools.shredder", "Shredder" },
                        { "hex.builtin.tools.file_tools.shredder.warning", "This tool IRRECOVERABLY destroys a file. Use with caution" },
                        { "hex.builtin.tools.file_tools.shredder.input", "File to shred " },
                        { "hex.builtin.tools.file_tools.shredder.picker", "Open File to Shred" },
                        { "hex.builtin.tools.file_tools.shredder.fast", "Fast Mode" },
                        { "hex.builtin.tools.file_tools.shredder.shredding", "Shredding..." },
                        { "hex.builtin.tools.file_tools.shredder.shred", "Shred" },
                        { "hex.builtin.tools.file_tools.shredder.error.open", "Failed to open selected file!" },
                        { "hex.builtin.tools.file_tools.shredder.success", "Shredded successfully!" },
                    { "hex.builtin.tools.file_tools.splitter", "Splitter" },
                        { "hex.builtin.tools.file_tools.splitter.sizes.5_75_floppy", "5¼\" Floppy disk (1200KiB)" },
                        { "hex.builtin.tools.file_tools.splitter.sizes.3_5_floppy", "3½\" Floppy disk (1400KiB)" },
                        { "hex.builtin.tools.file_tools.splitter.sizes.zip100", "Zip 100 Disk (100MiB)" },
                        { "hex.builtin.tools.file_tools.splitter.sizes.zip200", "Zip 200 Disk (200MiB)" },
                        { "hex.builtin.tools.file_tools.splitter.sizes.cdrom650", "CD-ROM (650MiB)" },
                        { "hex.builtin.tools.file_tools.splitter.sizes.cdrom700", "CD-ROM (700MiB)" },
                        { "hex.builtin.tools.file_tools.splitter.sizes.fat32", "FAT32 (4GiB)" },
                        { "hex.builtin.tools.file_tools.splitter.sizes.custom", "Custom" },
                        { "hex.builtin.tools.file_tools.splitter.input", "File to split " },
                        { "hex.builtin.tools.file_tools.splitter.picker.input", "Open File to split" },
                        { "hex.builtin.tools.file_tools.splitter.output", "Output path " },
                        { "hex.builtin.tools.file_tools.splitter.picker.output", "Set base path" },
                        { "hex.builtin.tools.file_tools.splitter.picker.splitting", "Splitting..." },
                        { "hex.builtin.tools.file_tools.splitter.picker.split", "Split" },
                        { "hex.builtin.tools.file_tools.splitter.picker.error.open", "Failed to open selected file!" },
                        { "hex.builtin.tools.file_tools.splitter.picker.error.size", "File is smaller than part size" },
                        { "hex.builtin.tools.file_tools.splitter.picker.error.create", "Failed to create part file {0}" },
                        { "hex.builtin.tools.file_tools.splitter.picker.success", "File split successfully!" },
                    { "hex.builtin.tools.file_tools.combiner", "Combiner" },
                        { "hex.builtin.tools.file_tools.combiner.add", "Add..." },
                        { "hex.builtin.tools.file_tools.combiner.add.picker", "Add file" },
                        { "hex.builtin.tools.file_tools.combiner.delete", "Delete" },
                        { "hex.builtin.tools.file_tools.combiner.clear", "Clear" },
                        { "hex.builtin.tools.file_tools.combiner.output", "Output file " },
                        { "hex.builtin.tools.file_tools.combiner.output.picker", "Set output base path" },
                        { "hex.builtin.tools.file_tools.combiner.combining", "Combining..." },
                        { "hex.builtin.tools.file_tools.combiner.combine", "Combine" },
                        { "hex.builtin.tools.file_tools.combiner.error.open_output", "Failed to create output file" },
                        { "hex.builtin.tools.file_tools.combiner.open_input", "Failed to open input file {0}" },
                        { "hex.builtin.tools.file_tools.combiner.success", "Files combined successfully!" },

                { "hex.builtin.setting.imhex", "ImHex" },
                    { "hex.builtin.setting.imhex.recent_files", "Recent Files" },
                { "hex.builtin.setting.general", "General" },
                    { "hex.builtin.setting.general.show_tips", "Show tips on startup" },
                    { "hex.builtin.setting.general.auto_load_patterns", "Auto-load supported pattern" },
                { "hex.builtin.setting.interface", "Interface" },
                    { "hex.builtin.setting.interface.color", "Color theme" },
                        { "hex.builtin.setting.interface.color.system", "System" },
                        { "hex.builtin.setting.interface.color.dark", "Dark" },
                        { "hex.builtin.setting.interface.color.light", "Light" },
                        { "hex.builtin.setting.interface.color.classic", "Classic" },
                    { "hex.builtin.setting.interface.scaling", "Scaling" },
                        { "hex.builtin.setting.interface.scaling.native", "Native" },
                        { "hex.builtin.setting.interface.scaling.x0_5", "x0.5" },
                        { "hex.builtin.setting.interface.scaling.x1_0", "x1.0" },
                        { "hex.builtin.setting.interface.scaling.x1_5", "x1.5" },
                        { "hex.builtin.setting.interface.scaling.x2_0", "x2.0" },
                    { "hex.builtin.setting.interface.language", "Language" },
                    { "hex.builtin.setting.interface.fps", "FPS Limit" },
                    { "hex.builtin.setting.interface.fps.unlocked", "Unlocked" },
                    { "hex.builtin.setting.interface.highlight_alpha", "Highlighting opacity" },
                { "hex.builtin.setting.hex_editor", "Hex Editor" },
                    { "hex.builtin.setting.hex_editor.column_count", "Byte column count" },
                    { "hex.builtin.setting.hex_editor.hexii", "Display HexII instead of Bytes" },
                    { "hex.builtin.setting.hex_editor.ascii", "Display ASCII column" },
                    { "hex.builtin.setting.hex_editor.advanced_decoding", "Display advanced decoding column" },
                    { "hex.builtin.setting.hex_editor.grey_zeros", "Grey out zeros" },
                    { "hex.builtin.setting.hex_editor.uppercase_hex", "Upper case Hex characters" },
                    { "hex.builtin.setting.hex_editor.extra_info", "Display extra information" },

                { "hex.builtin.provider.file.path", "File path" },
                { "hex.builtin.provider.file.size", "Size" },
                { "hex.builtin.provider.file.creation", "Creation time" },
                { "hex.builtin.provider.file.access", "Last access time" },
                { "hex.builtin.provider.file.modification", "Last modification time" },

                { "hex.builtin.provider.file", "File Provider" },
                { "hex.builtin.provider.gdb", "GDB Server Provider" },
                    { "hex.builtin.provider.gdb.name", "GDB Server <{0}:{1}>" },
                    { "hex.builtin.provider.gdb.server", "Server" },
                    { "hex.builtin.provider.gdb.ip", "IP Address" },
                    { "hex.builtin.provider.gdb.port", "Port" },
                { "hex.builtin.provider.disk", "Raw Disk Provider" },
                    { "hex.builtin.provider.disk.selected_disk", "Disk" },
                    { "hex.builtin.provider.disk.disk_size", "Disk Size" },
                    { "hex.builtin.provider.disk.sector_size", "Sector Size" },
                    { "hex.builtin.provider.disk.reload", "Reload" },

                { "hex.builtin.layouts.default", "Default" }
        });
    }

}
